#ifndef REGISTRO_H_
#define REGISTRO_H_

#include "../../Comunes/Palabra.h"
#include "../../Persistencia/Serializable.h"
#include "../Estructuras33/Clave.h"
#include "../Funciones/FrontCoding.h"
#include <string>
#include <stdio.h>
#include <iostream>
#include <stdlib.h>

using namespace std;
using namespace palabra;


class Registro : public Serializable {
private:
	Clave* clave;
	unsigned int offset;
	int zero;
	int transformada;

public:
	Registro();
	Registro(Clave* clave, unsigned int offset);
	virtual ~Registro();
	int getTamanio() const{
		return (sizeof(int) + this->clave->getTamanio() + sizeof(unsigned int) + sizeof(int));
	}
	string toString();
	void show();
	void transformarAFrontCoding(string primera, string ruta);
	void sacarElFrontCoding(string palabra, string ruta);
	void serializar(char * buffer, unsigned int &offset);
	void deserializar(char * buffer, unsigned int &offset);
    Clave *getClave() const{
        return clave;
    }
    unsigned int getOffset() const{
        return offset;
    }
    int getTransformada () const{
    	return transformada;
    }
    int getZero () const{
       	return zero;
       }

    void setTransformada ( int i){
    	this->transformada = i;
    }
};

#endif /* REGISTRO_H_ */
